#ifndef __DB_SERVICE_H__
#define __DB_SERVICE_H__

#include <string>

using namespace std;

#include "DatosConexion.h"
#include "JuegoDAO.h"
#include "JugadorDAO.h"
#include "ConectorMySql.h"

//parametros de base de datos
#define DEFAULT_DB_HOST "localhost"
#define DEFAULT_DB_NAME "pacman"
#define DEFAULT_DB_USER "pacman"
#define DEFAULT_DB_PASS "pacman"

/**
 * Clase que brinda servicios de acceso a la base de datos
 */
class DBService{

	static DBService* instance;

	DatosConexion* datosConexion;
	ConectorMySql* conectorMySql;
	JugadorDAO* jugadorDAO;
	JuegoDAO* juegoDAO;

public:

	/**
	 * Inicializa la conexion a la base de datos
	 */ 
	DBService();
	
	static DBService* getInstance();
	
	// Valida la conexion a la BD
	bool isConexionCorrecta();

	bool existeNombreUsuario(const string& login);

	bool crearUsuario(const string& login, const string& pass);

	bool esLoginValido(const string& loginP1, const string& passP1, const string& loginP2, const string& pass2);

	void iniciarJuegoEntre(const string& loginP1, const string& loginP2);
	
	void finalizarJuegoEntre(const string& loginP1,int puntosA, const string& loginP2, int puntosB);

	Lista<ItemEstadistica>* getRankingPartidosGanados();

	Lista<ItemEstadistica>* getRankingPartidosJugados();

	Lista<ItemEstadistica>* getRankingPuntos();

	Lista<ItemEstadistica>* getRankingTiempoJugado();

	Lista<ItemComparativoEstadistica>* getComparacion(const string& usuarioA, const string& usuarioB);

	~DBService(){
	}
};

#endif